package com.intct.hbase.namespace;

import com.intct.util.ConnectionHBaseUtils;
import org.apache.hadoop.hbase.NamespaceDescriptor;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;

import java.io.IOException;
import java.util.Arrays;
import java.util.List;

/**
 * @author gufg
 * @since 2025/6/12
 * Tabel对象主要做的是DML  get put delete sacn......
 * Admin对象主林做的是DDL  create drop alter........
 */
public class CreateNamespace {
    public static void main(String[] args) throws IOException {
        createNamespaces("intct_80_api");
    }

    /**
     * @param namespace
     */
    private static void createNamespaces(String namespace) throws IOException {
        // 创建HBase
        Connection connection = ConnectionHBaseUtils.getConnection();

        // 获取一个Admin实例
        Admin admin = connection.getAdmin();

        try {
            // 判断命名空间是否存在
            List<String> listNamespaces = Arrays.asList(admin.listNamespaces());

            // 如果数组中不存在需要创建的命名空间名称，则进行创建
            if (!listNamespaces.contains(namespace)) {
                // 命名空间描述
                NamespaceDescriptor namespaceDescriptor = NamespaceDescriptor
                        .create(namespace)
                        .addConfiguration("intct81-name", "intct81-value")
                        .build();

                // 创建命名空间
                admin.createNamespace(namespaceDescriptor);
            } else {
                System.out.println("命名空间名称已经存在！");
            }
        } catch (IOException e) {
            // 打印日志
            e.printStackTrace();
        } finally {
            // 关闭资源
            admin.close();
        }
    }
}
